package com.crm.service.customerManager;

import com.crm.model.entity.customerManager.CustomerContactPerson;
import com.crm.model.vo.contactManager.ContactRepeatVO;

import java.util.Date;
import java.util.List;

/**
 * @ Author ：pym
 * @ Date   ：2021/1/22 16:26
 */
public interface CustomerContactPersonDbService {

    /**
     * 删除客户下联系人
     * @param customerContactPerson 客户联系人实体
     * @return
     */
    Boolean deleteCustomerContactPersonById(CustomerContactPerson customerContactPerson);

    /**
     * 根据客户id、联系人名称和联系方式判重，是否插入客户联系人
     * @Author pym
     * @Date  2021/3/4 14:01
     * @param customerId --客户id
     * @param contactName --联系人姓名
     * @param contactInformation --联系方式
     * @return {@link {java.lang.Boolean}}
     */
    CustomerContactPerson isInsertCustomerContactPerson(String customerId, String contactName, String contactInformation);

    /**
     * 用户模块-客户管理-我的客户-跟进-客户联系人回显
     * @Author pym
     * @Date  2021/3/5 9:11 
     * @param customerId   --客户id
     * @param contactName  --联系人姓名
     * @return {@link {java.util.List<com.crm.model.entity.customerManager.CustomerContactPerson>}}
     */
    List<CustomerContactPerson> selectCustomerContactPersons(String customerId, String contactName);

    /**
     * 通过客户id和联系人名称名称和联系方式来修改客户下联系人的联系方式成为主联系人
     * @param customerId 客户id
     * @param contactName 联系人名称
     * @param contactInformation 联系方式
     * @return
     */
    CustomerContactPerson getCustomerIdAndContactNameAndLxfs(String customerId, String contactName, String contactInformation);

    /**
     * 修改客户下联系人表
     * @param customerContactPerson 客户下联系人表实体
     * @return
     */
    Boolean updateCustomerContactPerson(CustomerContactPerson customerContactPerson);

    /**
     * 通过客户id和联系人类型 主联系人-1   从联系人-2  查询一个客户下只能有一个主联系人-->1 的联系人
     * @param customerId 客户id
     * @param contactState  联系人类型 主联系人-1   从联系人-2
     * @return
     */
    CustomerContactPerson getCustomerIdAndContactState(String customerId, Integer contactState);

    /**
     * 根据客户ID查询客户下的联系人
     * @Author pym
     * @Date  2021/4/14 15:21
     * @param customerId
     * @return {@link {java.util.List<com.crm.model.entity.customerManager.CustomerContactPerson>}}
     */
    List<CustomerContactPerson> selectCustomerContactPersonList(String customerId);

    /**
     * 通过客户id和联系人姓名和联系方式和分公司id查询客户下联系人有没有数据
     * @param customerId 客户id
     * @param contactName 联系人姓名
     * @param contactInformation 联系方式
     * @param companyId 公司id
     * @return
     */
    CustomerContactPerson selectCustomerContactPerson(String customerId, String contactName, String contactInformation, String companyId);

    /**
     * 通过分公司id进行去重
     * @param companyId 公司id
     * @return
     */
    List<ContactRepeatVO> selectContactrepeat(String companyId);

    /**
     * (客服部)--根据客户ID修改客户联系人
     * @param customerContactPerson
     * @author yincuimei
     * @return
     */
    Boolean updateCustomerPersonByCustomerId(CustomerContactPerson customerContactPerson,String customerId);

    /**
     * 根据客户ID更新客户联系人分公司ID
     * @Author pym
     * @Date  2021/8/20 16:09
     * @param customerId     -客户ID
     * @param companyId      -公司ID
     * @param accountId      -更新人ID
     * @param updateTm       -更新时间
     * @return {@link {java.lang.Boolean}}
     */
    Boolean updateCustomerContactPersonByCustomerId(String customerId, String companyId, String accountId, Date updateTm);
}
